﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Service.Security.Services;

namespace Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation
{
    /// <summary>
    /// Tipo de Conta
    /// </summary>
    [SinacorServiceBehavior]
    public class TipoConta : ServiceContract.ITipoConta
    {
        #region Métodos
        /// <summary>
        /// Altera os dados de um tipo de conta de um determinado cliente
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Tipo de Conta</param>
        public void AlterarTipoConta(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().AlterarTipoConta(translatorRequest.ToTipoConta(request));
        }
        /// <summary>
        /// Altera os dados de diversos tipos de conta de diversos clientes
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Lista de tipos de Conta</param>
        public void AlterarTiposConta(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest> request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().AlterarTiposConta(translatorRequest.ToTipoConta(request));
        }
        /// <summary>
        /// Consulta tipos de contas conforme o filtro informado
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Filtro de Tipo de Conta</param>
        /// <returns>Lista de Tipos de Conta</returns>
        public List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Response.TipoContaResponse> ConsultarTiposConta(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroTipoContaRequest request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            Translator.BusinessEntityToDataContract.TipoConta translatorResponse = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.BusinessEntityToDataContract.TipoConta();
            return translatorResponse.ToTipoContaResponse(new BusinessLogic.TipoConta().ConsultarTiposConta(translatorRequest.ToFiltroTipoConta(request)));
        }
        /// <summary>
        /// Exclui um tipo de conta de um determinado cliente
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Filtro Codigo Cliente</param>
        public void ExcluirTipoConta(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCodigoClienteRequest request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().ExcluirTipoConta(translatorRequest.ToFiltroCodigoCliente(request));
        }
        /// <summary>
        ///  Exclui diversos tipos de conta de diversos clientes
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Filtro de Codigo</param>
        public void ExcluirTiposConta(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCodigoClienteRequest> request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().ExcluirTiposConta(translatorRequest.ToFiltroCodigoCliente(request));
        }
        /// <summary>
        /// Inclui diversos tipo de conta para diversos cliente
        /// Altera os dados de diversos tipos de conta de diversos clientes
        /// Exclui diversos tipos de conta de diversos clientes
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="listaInclusao">Lista de Inclusão</param>
        /// <param name="listaAlteracao">Lista de Alteração</param>
        /// <param name="listaExclusao">Lista de Exclusão</param>
        public void ExecutarTransacoes(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest> listaInclusao, List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest> listaAlteracao, List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCodigoClienteRequest> listaExclusao)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().ExecutarTransacoes(translatorRequest.ToTipoConta(listaInclusao), translatorRequest.ToTipoConta(listaAlteracao), translatorRequest.ToFiltroCodigoCliente(listaExclusao));
        }
        /// <summary>
        /// Inclui um tipo de conta para um determinado cliente
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Tipos de Conta</param>
        public void IncluirTipoConta(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().IncluirTipoConta(translatorRequest.ToTipoConta(request));
        }
        /// <summary>
        /// Inclui diversos tipo de conta para diversos cliente
        /// </summary>
        /// <tables>
        /// TBOCARPRO
        /// </tables>
        /// <param name="request">Lista de Tipos de Contas</param>
        public void IncluirTiposConta(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.TipoContaRequest> request)
        {
            Translator.DataContractToBusinessEntity.TipoConta translatorRequest = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.TipoConta();
            new BusinessLogic.TipoConta().IncluirTiposConta(translatorRequest.ToTipoConta(request));
        }

        #endregion
    }
}
